<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script src="./js/utils.js"></script>
    <script>
        // 有如下两组数据：
        let numberArr = ["3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"];
        let symbolArr = ["方块", "梅花", "红桃", "黑桃"];


        const pokers = createPokers();
        shuffleArray(pokers);
        // 按顺序截取17张牌
        // const player1 = pokers.slice(0, 17)
        // const player2 = pokers.slice(17, 34)
        // const player3 = pokers.slice(34, 51)

        // 按顺序删除17张牌
        const player1 = pokers.splice(0, 17);
        const player2 = pokers.splice(0, 17);
        const player3 = pokers.splice(0, 17);

        sortPokers(player1);
        sortPokers(player2);
        sortPokers(player3);

        // const player1 = getPlayerPoker();
        // const player2 = getPlayerPoker();
        // const player3 = getPlayerPoker();
        console.log(player1);
        console.log(player2);
        console.log(player3);
        console.log(pokers);

        // 功能一：生成一副牌
        // 根据上面两组数据，生成一副完整的牌数据
        // 每一个数字都有4个花色，总共54张（大小王自己加）
        // 生成一副完整的54张牌（按顺序排列的）
        function createPokers() {
            let pokers = [];
            numberArr.forEach((numberItem, numberIndex) => {
                symbolArr.forEach((symbolItem, symbolIndex) => {
                    pokers.push({
                        text: symbolItem + numberItem,
                        number: numberIndex,
                        symbol: symbolIndex
                    });
                })
            })
            pokers.push({
                text: '小王',
                number: numberArr.length,
                symbol: 0
            }, {
                text: '大王',
                number: numberArr.length,
                symbol: 1
            })
            return pokers;
        }

        // 功能二：随机发牌
        // 随机发三组牌，每组牌17张
        // 剩下3张底牌
        // 方案一：每次都随机取一张，总共取17次
        function getPlayerPoker() {
            let playerPoker = []; // 保存一个玩家的17张牌
            for (let i = 0; i < 17; i++) {
                // 从54张牌中随机抽取一张
                // 随机生成一张牌的下标
                const index = getRandom(0, pokers.length - 1);
                playerPoker.push(pokers[index]);
                // 从大数组中将当前这张牌删除
                pokers.splice(index, 1)

                // splice有一个返回值：以数组的形式得到所有删除的数据
                // const removeArr = pokers.splice(index, 1);
                // playerPoker = playerPoker.concat(removeArr);
            }
            return playerPoker;
        }

        // 方案二：先将54张牌顺序打乱，然后按顺序取17
        function shuffleArray(arr) {
            for (let i = 0; i < arr.length; i++) {
                const num = Math.round(Math.random() * (arr.length - 1));
                // 依次将数组中的每一个数，和另一个随机下标进行位置交换
                [arr[i], arr[num]] = [arr[num], arr[i]]
            }
        }


        // 功能三：对三个玩家的牌按照如下顺序进行排序
        // 数字从小到大
        // 数字相同，则按照“黑 - 红 - 梅 - 方”的顺序排列
        function sortPokers(pokersArray) {
            pokersArray.sort((a, b) => {
                if (a.number == b.number) {
                    return a.symbol - b.symbol;
                }
                return a.number - b.number;
            })
        }
    </script>
</body>

</html>